#!/bin/bash
# 清屏并定义颜色变量
clear
RED='\e[1;31m'       # 红色（粗体）
GREEN='\e[1;32m'     # 绿色（粗体）
YELLOW='\e[1;33m'    # 黄色（粗体）
CYAN='\e[1;36m'      # 青色（粗体）
NC='\e[0m'           # 重置颜色
# 检查是否以 root 用户运行
if [ "$(id -u)" -ne 0 ]; then
    echo -e "${RED}错误：请以 root 用户运行此脚本！${NC}"
    exit 1
fi

# 获取系统信息
OS=$(lsb_release -is)
VERSION_CODENAME=$(lsb_release -cs)

# 检查并安装 Git
if ! command -v git &> /dev/null; then
    echo -e "${RED}Git 未安装，开始安装...${RESET}"
    echo -e "${GREEN}正在更新包列表...${RESET}"
    sudo apt update
    echo -e "${GREEN}正在安装 Git...${RESET}"
    sudo apt install -y git
else
    echo -e "${GREEN}Git 已安装，无需重复安装。${RESET}"
fi

# 检查并安装 PostgreSQL
if ! command -v psql &> /dev/null; then
    echo -e "${RED}PostgreSQL 未安装，开始安装...${RESET}"
    echo -e "${GREEN}正在更新包列表...${RESET}"
    sudo apt update
    echo -e "${GREEN}正在安装 PostgreSQL 和 PostgreSQL 扩展...${RESET}"
    sudo apt install -y postgresql postgresql-contrib
else
    echo -e "${GREEN}PostgreSQL 已安装，无需重复安装。${RESET}"
fi

# 切换到 postgres 用户并执行数据库操作
echo -e "${GREEN}正在设置数据库...${RESET}"
sudo su - postgres << EOF
if ! psql -lqt | cut -d \| -f 1 | grep -qw zhenxun_bot; then
    psql -c "CREATE DATABASE zhenxun_bot OWNER postgres;"
else
    echo -e "${GREEN}数据库 zhenxun_bot 已存在。${RESET}"
fi
psql -c "ALTER USER postgres WITH PASSWORD 'zhenxun_bot';"
EOF

# 克隆 Git 仓库
echo -e "${GREEN}检查 zhenxun_bot 仓库...${RESET}"
if [ -d "zhenxun_bot" ]; then
    echo -e "${GREEN}目录 zhenxun_bot 已存在，跳过克隆步骤。${RESET}"
else
    echo -e "${GREEN}正在克隆 zhenxun_bot 仓库...${RESET}"
    git clone --depth 1 http://ghproxy.521002.xyz/https://github.com/HibiKier/zhenxun_bot.git 
fi

# 进入项目目录并安装依赖
if [ -d "zhenxun_bot" ]; then
    cd zhenxun_bot || { echo -e "${RED}项目目录不存在！${RESET}"; exit 1; }
    
    # 检查并安装 Poetry
    if ! command -v poetry &> /dev/null; then
        echo -e "${RED}Poetry 未安装，开始安装...${RESET}"
        echo -e "${GREEN}正在通过 pip3 安装 Poetry...${RESET}"
        pip3 install poetry
    else
        echo -e "${GREEN}Poetry 已安装，无需重复安装。${RESET}"
    fi

    echo -e "${GREEN}正在安装项目依赖...${RESET}"
    poetry install

    # 编辑 .env.dev 文件
    echo -e "${GREEN}正在编辑 .env.dev 文件...${RESET}"
    env_file=".env.dev"
    if [[ -f "$env_file" ]]; then
        # 使用 sed 修改 DB_URL
        sed -i 's|^DB_URL.*|DB_URL="postgres://postgres:zhenxun_bot@127.0.0.1:5432/zhenxun_bot"|' "$env_file"
        echo -e "${GREEN}DB_URL 已更新。${RESET}"
    else
        # 如果文件不存在，创建并写入
        echo -e 'DB_URL="postgres://postgres:zhenxun_bot@127.0.0.1:5432/zhenxun_bot"' > "$env_file"
        echo -e "${GREEN}.env.dev 文件不存在，已创建并写入 DB_URL。${RESET}"
    fi
else
    echo -e "${RED}zhenxun_bot 目录不存在，无法继续执行。${RESET}"
    exit 1
fi

echo -e "${GREEN}好了你可以启动小真寻了！！！${RESET}"
echo -e "${GREEN}--- cd zhenxun_bot${RESET}"
echo -e "${GREEN}--- poetry run python3 bot.py${RESET}"